const http = require('http')
const express = require('express')
// npm i -S dotenv  ==> 在项目根目录下面要有一个.env文件，且文件中要有内容 secret=few
require('dotenv').config()
const path = require('path')
const cookieSession = require('cookie-session')
// 连接数据库
require('./connDatabase')
const app = express()
const server = http.createServer(app)
const io = require('socket.io')(server)
// 此处一定要用server对象，不能用app对象，端口复用
server.listen(3000, '0.0.0.0', () => console.log('http://localhost:3000'))
app.engine('html', require('express-art-template'))
app.set('views', path.resolve('./views'))
// 静态资源
app.use(express.static('./public'))
// post
app.use(express.urlencoded({ extended: false }))
app.use(express.json())

// session 会话机制
const secret = process.env.secret
app.use(cookieSession({
  name: 'gp',
  secret
}))

// websocket服务器转发
io.on('connection', socket => {
  socket.on('message', data => {
    console.log(data)
    // 群发
    io.emit('message', data)
  })
})


// 路由
app.use(require('./router'))

// 404处理
app.all('*', (req, res) => {
  res.render('404.html')
})